package com.Oct_Ten;

/**
 * 230. 二叉搜索树中第K小的元素
 * 给定一个二叉搜索树的根节点 root ，和一个整数 k ，请你设计一个算法查找其中第 k 个最小元素（从 1 开始计数）。
 * https://leetcode.cn/problems/kth-smallest-element-in-a-bst/
 *
 * 2022/10/10 10:29
 */

public class Solution230 {

    int ans=-1,cnt=0;

    public int kthSmallest(TreeNode root, int k) {
        int cnt=0;
        dfs(root,k);
        return ans;
    }

    void dfs(TreeNode root,int k){
        if (root==null) return;
        if (ans!=-1) return;
        dfs(root.left,k);
        cnt++;
        if (cnt==k)
        {
            ans=root.val;
            return;
        }
        dfs(root.right,k);
    }

    public class TreeNode {
      int val;
      TreeNode left;
      TreeNode right;
      TreeNode() {}
      TreeNode(int val) { this.val = val; }
      TreeNode(int val, TreeNode left, TreeNode right) {
          this.val = val;
          this.left = left;
          this.right = right;
      }
  }
}
